import os
import sys

# 将项目根目录添加到Python路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from app import create_app, db
from models import User, Post, Comment
from datetime import datetime, timedelta
import random

def create_test_data(app):
    """创建社区交流测试数据"""
    with app.app_context():
        try:
            # 获取测试用户
            test_user = User.query.filter_by(username='test_user').first()
            if not test_user:
                print("错误：找不到测试用户，请先运行 init_test_data.py")
                return
            
            # 创建一些测试帖子
            topics = [
                {
                    'title': '如何打造一个舒适的屋顶花园？',
                    'content': '''屋顶花园设计需要考虑以下几个关键点：

1. 防水与排水系统
- 选用高质量防水材料
- 设计合理的排水坡度
- 安装可靠的排水系统

2. 植物选择
- 耐旱耐热的植物品种
- 根系不宜过大的植物
- 搭配四季常青与花卉植物

3. 载重考虑
- 评估建筑承重能力
- 选择轻质土壤
- 合理控制种植土层厚度

4. 休闲设施
- 遮阳设施
- 休息座椅
- 照明系统

5. 养护管理
- 自动喷灌系统
- 定期维护计划
- 季节性养护要点'''
                },
                {
                    'title': '园林景观照明设计技巧分享',
                    'content': '''景观照明对于提升空间夜间效果非常重要，以下是一些实用技巧：

1. 光源选择
- LED节能灯具
- 色温搭配
- 防水等级要求

2. 照明方式
- 投射照明
- 轮廓照明
- 水景照明
- 步道照明

3. 光污染控制
- 避免眩光
- 控制溢光
- 合理照度

4. 节能考虑
- 时控系统
- 分区控制
- 智能调光'''
                },
                {
                    'title': '植物配置的艺术：层次感营造技巧',
                    'content': '''合理的植物配置可以创造丰富的空间层次感，以下是具体方法：

1. 垂直分层
- 乔木层
- 灌木层
- 地被层

2. 色彩搭配
- 四季变化
- 色彩协调
- 重点突出

3. 空间组织
- 前景设计
- 中景过渡
- 背景营造

4. 功能考虑
- 遮阳功能
- 隔离作用
- 观赏价值'''
                }
            ]
            
            print("开始创建测试帖子...")
            for topic in topics:
                # 随机生成创建时间（最近30天内）
                created_at = datetime.utcnow() - timedelta(
                    days=random.randint(0, 30),
                    hours=random.randint(0, 23),
                    minutes=random.randint(0, 59)
                )
                
                post = Post(
                    title=topic['title'],
                    content=topic['content'],
                    user_id=test_user.id,
                    views=random.randint(50, 500),
                    likes=random.randint(5, 50),
                    created_at=created_at,
                    updated_at=created_at
                )
                db.session.add(post)
                db.session.commit()
                
                # 为每个帖子添加2-5条评论
                for _ in range(random.randint(2, 5)):
                    comment_time = created_at + timedelta(
                        hours=random.randint(1, 72)
                    )
                    comment = Comment(
                        content=random.choice([
                            "非常实用的建议，感谢分享！",
                            "这些技巧对我很有帮助。",
                            "写得很详细，学习了。",
                            "有一些问题想请教，可以私信交流吗？",
                            "完全同意你的观点，我也有类似的经验。",
                            "这个方法我试过，效果确实不错。",
                            "能分享一些具体案例吗？",
                            "总结得很到位，收藏了！"
                        ]),
                        post_id=post.id,
                        user_id=test_user.id,
                        created_at=comment_time,
                        updated_at=comment_time
                    )
                    db.session.add(comment)
                
                db.session.commit()
                print(f"已创建帖子：{topic['title']}")
            
            print("\n测试数据创建完成！")
            print(f"已创建 {len(topics)} 个帖子")
            print(f"总评论数：{Comment.query.count()} 条")
            
        except Exception as e:
            print(f"错误：{str(e)}")
            db.session.rollback()
            raise

def main():
    """主函数"""
    try:
        # 创建应用实例
        app = create_app()
        
        # 创建测试数据
        create_test_data(app)
        
    except Exception as e:
        print(f"初始化失败：{str(e)}")
        sys.exit(1)

if __name__ == '__main__':
    main() 